#ifndef _YGDICT_H_
#define _YGDICT_H_

// TODO: Remove need for STL

#include <map>
#include <string>

namespace YoghurtGum
{

	class Dict
	{

		friend class Dict;
	
	public:
	
		Dict();
		~Dict();

		template <typename T>
		void Set(const char* a_Key, const T& a_Value);

		template <typename T>
		const T* Get(const char* a_Key);

		Dict& operator = (const Dict& a_Other);
	
	protected:

		struct Entry
		{
			void* data;
			unsigned int size;
		};

		Entry* _Find(const char* a_Name);

		std::map<std::string, Entry*> m_Entries;
	
	}; // class Dict

}; // namespace YoghurtGum

#include "YGDict.inl"
	
#endif